/** layui-v2.4.5 MIT License By https://www.layui.com */
;layui.define("jquery", function(e) {
    "use strict";
    var i = layui.$
      , n = (layui.hint(),
    layui.device(),
    {
        config: {},
        set: function(e) {
            var n = this;
            return n.config = i.extend({}, n.config, e),
            n
        },
        on: function(e, i) {
            return layui.onevent.call(this, t, e, i)
        }
    })
      , t = "carousel"
      , a = "layui-this"
      , l = ">*[carousel-item]>*"
      , o = "layui-carousel-left"
      , r = "layui-carousel-right"
      , d = "layui-carousel-prev"
      , s = "layui-carousel-next"
      , u = "layui-carousel-arrow"
      , c = "layui-carousel-ind"
      , m = function(e) {
        var t = this;
        t.config = i.extend({}, t.config, n.config, e),
        t.render()
    };
    m.prototype.config = {
        width: "600px",
        height: "280px",
        full: !1,
        arrow: "hover",
        indicator: "inside",
        autoplay: !0,
        interval: 3e3,
        anim: "",
        trigger: "click",
        index: 0
    },
    m.prototype.render = function() {
        var e = this
          , n = e.config;
        n.elem = i(n.elem),
        n.elem[0] && (e.elemItem = n.elem.find(l),
        n.index < 0 && (n.index = 0),
        n.index >= e.elemItem.length && (n.index = e.elemItem.length - 1),
        n.interval < 800 && (n.interval = 800),
        n.full ? n.elem.css({
            position: "fixed",
            width: "100%",
            height: "100%",
            zIndex: 9999
        }) : n.elem.css({
            width: n.width,
            height: n.height
        }),
        n.elem.attr("lay-anim", n.anim),
        e.elemItem.eq(n.index).addClass(a),
        e.elemItem.length <= 1 || (e.indicator(),
        e.arrow(),
        e.autoplay(),
        e.events()))
    }
    ,
    m.prototype.reload = function(e) {
        var n = this;
        clearInterval(n.timer),
        n.config = i.extend({}, n.config, e),
        n.render()
    }
    ,
    m.prototype.prevIndex = function() {
        var e = this
          , i = e.config
          , n = i.index - 1;
        return n < 0 && (n = e.elemItem.length - 1),
        n
    }
    ,
    m.prototype.nextIndex = function() {
        var e = this
          , i = e.config
          , n = i.index + 1;
        return n >= e.elemItem.length && (n = 0),
        n
    }
    ,
    m.prototype.addIndex = function(e) {
        var i = this
          , n = i.config;
        e = e || 1,
        n.index = n.index + e,
        n.index >= i.elemItem.length && (n.index = 0)
    }
    ,
    m.prototype.subIndex = function(e) {
        var i = this
          , n = i.config;
        e = e || 1,
        n.index = n.index - e,
        n.index < 0 && (n.index = i.elemItem.length - 1)
    }
    ,
    m.prototype.autoplay = function() {
        var e = this
          , i = e.config;
        i.autoplay && (e.timer = setInterval(function() {
            e.slide()
        }, i.interval))
    }
    ,
    m.prototype.arrow = function() {
        var e = this
          , n = e.config
          , t = i(['<button class="layui-icon ' + u + '" lay-type="sub">' + ("updown" === n.anim ? "&#xe619;" : "&#xe603;") + "</button>", '<button class="layui-icon ' + u + '" lay-type="add">' + ("updown" === n.anim ? "&#xe61a;" : "&#xe602;") + "</button>"].join(""));
        n.elem.attr("lay-arrow", n.arrow),
        n.elem.find("." + u)[0] && n.elem.find("." + u).remove(),
        n.elem.append(t),
        t.on("click", function() {
            var n = i(this)
              , t = n.attr("lay-type");
            e.slide(t)
        })
    }
    ,
    m.prototype.indicator = function() {
        var e = this
          , n = e.config
          , t = e.elemInd = i(['<div class="' + c + '"><ul>', function() {
            var i = [];
            return layui.each(e.elemItem, function(e) {
                i.push("<li" + (n.index === e ? ' class="layui-this"' : "") + "></li>")
            }),
            i.join("")
        }(), "</ul></div>"].join(""));
        n.elem.attr("lay-indicator", n.indicator),
        n.elem.find("." + c)[0] && n.elem.find("." + c).remove(),
        n.elem.append(t),
        "updown" === n.anim && t.css("margin-top", -(t.height() / 2)),
        t.find("li").on("hover" === n.trigger ? "mouseover" : n.trigger, function() {
            var t = i(this)
              , a = t.index();
            a > n.index ? e.slide("add", a - n.index) : a < n.index && e.slide("sub", n.index - a)
        })
    }
    ,
    m.prototype.slide = function(e, i) {
        var n = this
          , l = n.elemItem
          , u = n.config
          , c = u.index
          , m = u.elem.attr("lay-filter");
        n.haveSlide || ("sub" === e ? (n.subIndex(i),
        l.eq(u.index).addClass(d),
        setTimeout(function() {
            l.eq(c).addClass(r),
            l.eq(u.index).addClass(r)
        }, 50)) : (n.addIndex(i),
        l.eq(u.index).addClass(s),
        setTimeout(function() {
            l.eq(c).addClass(o),
            l.eq(u.index).addClass(o)
        }, 50)),
        setTimeout(function() {
            l.removeClass(a + " " + d + " " + s + " " + o + " " + r),
            l.eq(u.index).addClass(a),
            n.haveSlide = !1
        }, 300),
        n.elemInd.find("li").eq(u.index).addClass(a).siblings().removeClass(a),
        n.haveSlide = !0,
        layui.event.call(this, t, "change(" + m + ")", {
            index: u.index,
            prevIndex: c,
            item: l.eq(u.index)
        }))
    }
    ,
    m.prototype.events = function() {
        var e = this
          , i = e.config;
        i.elem.data("haveEvents") || (i.elem.on("mouseenter", function() {
            clearInterval(e.timer)
        }).on("mouseleave", function() {
            e.autoplay()
        }),
        i.elem.data("haveEvents", !0))
    }
    ,
    n.render = function(e) {
        var i = new m(e);
        return i
    }
    ,
    e(t, n)
});
